<?php

/**
 * 前台登录错误日志 DS服务
 *
 * @author xiaoxia.xu<xiaoxia.xuxx@aliyun-inc.com>
 * @copyright ©2003-2103 phpwind.com
 * @license http://www.windframework.com
 *
 * @version $Id: PwLogLogin.php 21359 2012-12-05 08:01:23Z xiaoxia.xuxx $
 */
class PwLogLogin
{
    const ERROR_PWD = 1; //密码错误
    const ERROR_SAFEQ = 2; //安全问题及答案错误

    /**
     * 搜索日志.
     *
     * @param PwLogSo $so
     *
     * @return array
     */
    public function search(PwLogSo $so, $limit, $offset)
    {
        return $this->_getLogDao()->search($so->getCondition(), $limit, $offset);
    }

    /**
     * 根据条件统计日志.
     *
     * @param PwLogSo $so
     *
     * @return int
     */
    public function coutSearch(PwLogSo $so)
    {
        return $this->_getLogDao()->countSearch($so->getCondition());
    }

    /**
     * 添加日志.
     *
     * @param PwLogLoginDm $dm
     *
     * @return int
     */
    public function addLog(PwLogLoginDm $dm)
    {
        if (true !== ($r = $dm->beforeAdd())) {
            return $r;
        }

        return $this->_getLogDao()->addLog($dm->getData());
    }

    /**
     * 批量添加日志.
     *
     * @param array $dms
     *
     * @return bool
     */
    public function batchAddLog($dms)
    {
        if (empty($dms)) {
            return true;
        }
        $datas = array();
        foreach ($dms as $_dm) {
            if (!$_dm instanceof PwLogLoginDm) {
                return false;
            }
            if (true !== ($r = $_dm->beforeAdd())) {
                return $r;
            }
            $data[] = $_dm->getData();
        }

        return $this->_getLogDao()->batchAddLog($data);
    }

    /**
     * 根据日志ID删除日志.
     *
     * @param int $id
     *
     * @return int
     */
    public function deleteLog($id)
    {
        if (0 >= ($id = intval($id))) {
            return false;
        }

        return $this->_getLogDao()->deleteLog($id);
    }

    /**
     * 根据日志ID列表批量删除日志.
     *
     * @param array $logids
     *
     * @return int
     */
    public function batchDeleteLog($logids)
    {
        if (empty($logids)) {
            return false;
        }

        return $this->_getLogDao()->batchDeleteLog($logids);
    }

    /**
     * 清除某一个时间点之前的记录.
     *
     * @param string $time
     *
     * @return bool
     */
    public function clearLogBeforeDatetime($time)
    {
        if (!$time) {
            return false;
        }

        return $this->_getLogDao()->clearLogBeforeDatetime($time);
    }

    /**
     * @return PwLogLoginDao
     */
    protected function _getLogDao()
    {
        return Wekit::loadDao('log.dao.PwLogLoginDao');
    }
}
